/*
 * Copyright (c) 2024. hallele, Inc All rights reserved.
 */

package cn.hallele.infrastructure.metadata.constant;

/**
 * hallele_mc_core
 *
 * @author anle5
 * @since 2024/10/6 17:12
 */
public interface TokenConst {
    /**
     * token黑名单redis hash key
     */
    String BLACKLIST_PREFIX = "tokenBlacklist_";

    /**
     * 租户id
     */
    String TENANT_ID = "tenantId";

    /**
     * 用户ID
     */
    String USER_ID = "userId";

    /**
     * 数据权限
     */
    String DATA_SCOPE = "dataScope";

    /**
     * 权限(角色Code)集合
     */
    String AUTHORITIES = "authorities";

    /**
     * Bearer
     */
    String TYPE_BEARER = "Bearer";

    /**
     * jwt签发者
     */
    String ISSUER = "iss";

    /**
     * jwt所面向的用户
     */
    String SUBJECT = "sub";

    /**
     * 接收jwt的一方
     */
    String AUDIENCE = "aud";

    /**
     * jwt的过期时间，这个过期时间必须要大于签发时间
     */
    String EXPIRES_AT = "exp";

    /**
     * 生效时间，定义在什么时间之前，该jwt都是不可用的.
     */
    String NOT_BEFORE = "nbf";

    /**
     * jwt的签发时间
     */
    String ISSUED_AT = "iat";

    /**
     * jwt的唯一身份标识，主要用来作为一次性token,从而回避重放攻击。
     */
    String JWT_ID = "jti";
}
